﻿using System.Collections.Generic;
using Ext.Net;
using Siscont.Contabilidad;

namespace IU.Contabilidad.PlanCuentas
{
    public partial class ArbolPlan
    {
        /// <summary>
        /// Carga un nodo de cuentas.
        /// </summary>
        /// <param name="nodeID"></param>
        /// <returns></returns>
        [DirectMethod]
        public static string NodeLoad(string nodeID)
        {
            Ext.Net.TreeNodeCollection nodes = new Ext.Net.TreeNodeCollection();

            if (!string.IsNullOrEmpty(nodeID))
            {
                List<Cuenta> cuentas;
                Cuenta padre;

                if (nodeID.Equals("0"))
                {
                    padre = null;
                    cuentas = ContabilidadGlobal.Admin.ObtenerCuentas(1);
                }
                else
                {
                    padre = ContabilidadGlobal.Admin.ObtenerCuentaPadre(nodeID);
                    cuentas = ContabilidadGlobal.Admin.ObtenerCuentas(padre);
                }

                if (padre == null || padre.Nivel + 1 < Cuenta.NivelFinal)
                {
                    foreach (var c in cuentas)
                    {
                        AsyncTreeNode asyncNode = new AsyncTreeNode();
                        asyncNode.Text = c.Nombre;
                        asyncNode.NodeID = c.Id;
                        nodes.Add(asyncNode);
                    }
                }
                else
                {
                    foreach (var c in cuentas)
                    {
                        Ext.Net.TreeNode treeNode = new Ext.Net.TreeNode();
                        treeNode.Text = c.Nombre;
                        treeNode.NodeID = c.Id;
                        treeNode.Leaf = true;
                        nodes.Add(treeNode);
                    }
                }
            }

            return nodes.ToJson();
        }
    }
}